#pragma once

#include "vrdatacore_global.h"
#include "meshdrawableactor.h"
#include "mesh.h"

namespace VrDataCore
{
	class Map;

	//class VRDATACORE_EXPORT RemarkNode:public Mesh
	//{
	//public:
	//	RemarkNode(CoreBase::ActorBase* owneractor,const QString& name = "RemarkNode");
	//	RemarkNode(osg::MatrixTransform& node,CoreBase::ActorBase* owneractor, const QString& name = "RemarkNode");
	//	virtual void addedToScene(CoreBase::Scene* scene);
	//protected:
	//	~RemarkNode();
	//};

	class VRDATACORE_EXPORT RemarkActorBase:public MeshDrawableActor
	{
	public:
		RemarkActorBase(void);
	protected:
		virtual ~RemarkActorBase(void);
	public:
		virtual void buildPropertyMap();
		virtual osg::ref_ptr<CoreBase::ActorBase> clone();
		virtual void onMapLoadBegin(CoreBase::Map*){}
		virtual void onMapLoadEnd(CoreBase::Map*);
		void setEffectActorId(QString id);
		QString getEffectActorId();
		void setBindingEffect(CoreBase::ActorBase* actor);
		osg::ref_ptr<CoreBase::ActorBase> getBindingEffect();
		virtual void show();
		virtual void hide();
		void addEffectToMap(CoreBase::Map* map);
		void removeEffectFromMap(CoreBase::Map* map);
	protected:
		virtual void createDrawable() = 0;
		QString										_effectActorId;
		osg::ref_ptr<CoreBase::ActorBase>			_effectActor;
	};
}